for _ in range(int(input())):
n, m, k = map(int, input().split())
hs = list(map(int, input().split()))
available = m
g = hs[0]
for h in hs[1:]:
if g + available < h - k:
print("NO")
break
else:
available += g - max(0, (h - k))
g = h
else:
print("YES")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(ll test_case)
{
ll n, bag, k;
cin>> n >> bag >> k;
ll a[n];
for(int i=0; i<n; i++) cin >> a[i];
for(int i=0; i<n-1; i++){
if(a[i]+bag<a[i+1]-k) { cout << "NO\n"; return; }
ll x = max(0LL,a[i+1]-k);
if(a[i]>x) bag += a[i] - x;
else bag -= x - a[i];
}
cout << "YES\n";
}
int main()
{
ll t = 1, t1 = 0;
cin >> t;
while (t1 < t)
{
solve(t1 + 1);
t1++;
}
}
622. Design Circular Queue | 814. Binary Tree Pruning |
791. Custom Sort String | 787. Cheapest Flights Within K Stops |
779. K-th Symbol in Grammar | 701. Insert into a Binary Search Tree |
429. N-ary Tree Level Order Traversal | 739. Daily Temperatures |
647. Palindromic Substrings | 583. Delete Operation for Two Strings |
518. Coin Change 2 | 516. Longest Palindromic Subsequence |
468. Validate IP Address | 450. Delete Node in a BST |
445. Add Two Numbers II | 442. Find All Duplicates in an Array |
437. Path Sum III | 436. Find Right Interval |
435. Non-overlapping Intervals | 406. Queue Reconstruction by Height |
380. Insert Delete GetRandom O(1) | 332. Reconstruct Itinerary |
368. Largest Divisible Subset | 377. Combination Sum IV |
322. Coin Change | 307. Range Sum Query - Mutable |
287. Find the Duplicate Number | 279. Perfect Squares |
275. H-Index II | 274. H-Index |